#ifndef TEXTURE_H_
#define TEXTURE_H_

#include <string>

class Texture {
private:
	std::string name;
	std::string file;
	bool mipmaps;
	unsigned int handle;

	/**
	 * Loads a texture
	 */
	void load(std::string texturePath, bool mipmaps);

public:

	/**
	 * Create a new texture
	 */
	Texture(std::string texturePath, bool mipmaps);

	/**
	 * Reloads the texture
	 */
	void reload();

	/**
	 * Make this texture the actively used texture
	 */
	void use();

	virtual ~Texture();

	bool getMipmaps() const {
		return mipmaps;
	}

	std::string getName() const {
		return name;
	}

	void setName(std::string name) {
		this->name = name;
	}

	std::string getFile() const {
		return file;
	}

	unsigned int getHandle() const {
		return handle;
	}

	void setFile(std::string file) {
		this->file = file;
	}

	void setHandle(unsigned int handle) {
		this->handle = handle;
	}

};

#endif /* TEXTURE_H_ */
